home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / EXPBENCH.ZIP / GENFILE.BAS next >
BASIC Source File  |  1987-02-26  |  3KB  |  63 lines

  1. 10 REM Program to generate test knowledge bases for M1
  2. 20 REM Larry Press, (213) 475-6515, ARPA SWG.LPRESS@C.ISI.EDU
  3. 30 REM Variables used:
  4. 40 REM ---------------------------------------------------------------------
  5. 50 REM RW       rule width
  6. 60 REM NR       number of body rules to generate
  7. 70 REM RT$      rule type " and " or " or "
  8. 80 REM PR$      premise portion of the rule being generated
  9. 90 REM KBNAME$  output file name, contains test knowledge base
  10. 100 REM BV    beginning variable of current premise
  11. 110 REM     single character variables are temporary
  12. 120 REM ---------------------------------------------------------------------
  13. 130 REM main program
  14. 140 REM --------------------------------------------------------------------
  15. 150 GOSUB 200  'prompt user for inputs
  16. 160 GOSUB 460  'generate the goal and final rules
  17. 170 GOSUB 540  'generate the body rules
  18. 180 STOP
  19. 190 REM --------------------------------------------------------------------
  20. 200 REM Prompt user for inputs
  21. 210 REM --------------------------------------------------------------------
  22. 220 INPUT "What is the name of the knowledge base: ", KBNAME$
  23. 230 OPEN KBNAME$ FOR OUTPUT AS #1
  24. 240 INPUT "Simple, Conjunctive or Disjunctive (S/D/C): ", T$
  25. 250 RT$ = ""
  26. 260 IF T$ = "s" OR T$ = "S" THEN RT$ = " "
  27. 270 IF T$ = "c" OR T$ = "C" THEN RT$ = " and "
  28. 280 IF T$ = "d" OR T$ = "D" THEN RT$ = " or "
  29. 290 IF RT$ = "" THEN PRINT: PRINT "Answer S, D or C only" :PRINT: GOTO 240
  30. 300 IF RT$= " " THEN RW = 1: GOTO 320 '  simple rules have only one variable
  31. 310 INPUT "How many variables in each premise: ", RW
  32. 320 INPUT "How many body rules: ", NR
  33. 330 IF NR MOD RW = 0 THEN RETURN
  34. 340 PRINT: PRINT "The number of body rules must be an even"
  35. 350 PRINT "multiple of the number of variables.": PRINT: GOTO 310
  36. 360 REM --------------------------------------------------------------------
  37. 370 REM generate a premise of width RW, type RT$, beginning with variable BV
  38. 380 REM --------------------------------------------------------------------
  39. 390 PR$ = "if "
  40. 400 FOR I = 0 TO RW-1
  41. 410    PR$ = PR$ + "v" + RIGHT$ (STR$(BV+I), LEN(STR$(BV+I)) - 1)
  42. 420    IF I<>RW-1 THEN PR$ = PR$ + RT$
  43. 430 NEXT I
  44. 440 RETURN
  45. 450 REM --------------------------------------------------------------------
  46. 460 REM generate the goal and final-variable rules
  47. 470 REM --------------------------------------------------------------------
  48. 480 PRINT #1, "goal = v0."
  49. 490 FOR I = 1 TO RW
  50. 500    PRINT #1, "v" + RIGHT$( STR$ (NR+I), LEN (STR$(NR+I))-1) + "."
  51. 510 NEXT I
  52. 520 RETURN
  53. 530 REM --------------------------------------------------------------------
  54. 540 REM generate the body of the knowledge base
  55. 550 REM --------------------------------------------------------------------
  56. 560 FOR R = 0 TO NR
  57. 570    IF R = 0 THEN BV = 1: GOSUB 370: GOTO 590 '            the goal rule
  58. 580    IF (R-1) MOD RW = 0 THEN BV = R + RW: GOSUB 370
  59. 590    PRINT #1, PR$ + " then " + "v" + RIGHT$ (STR$(R), LEN(STR$(R))-1) + "."
  60. 600 NEXT R
  61. 610 RETURN
  62. 620 END
  63.